package code.whmmm.util.spring.aspect.handler;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * <br/> 创建时间: 2019/12/23 13:52
 *
 * @author Zero
 */
public interface AspectHandler {
    /**
     * 返回 false 时 不再向下执行。 <br/>
     * 在此方法中，可对 参数进行修改。{@link ProceedingJoinPoint#getArgs()} 获取参数。
     *
     * @param point
     * @return
     */
     boolean doBefore(ProceedingJoinPoint point) ;

    /**
     * doAfter 可对返回值进行修改。
     *
     * @param point
     * @param result 返回结果
     * @return
     */
     Object doAfter(ProceedingJoinPoint point, Object result);


    /**
     * 方法异常时执行。<br/>
     * <b>注意: e.getCause() 才是 应用抛出的异常！！！</b>
     *
     * @param point
     * @param e     异常
     * @return bool true，继续抛出异常，false 不抛出异常
     */
     boolean doException(ProceedingJoinPoint point, Exception e);


}
